import { QuotaDistributionTypeEnum } from '@/constants/enum';

/**
 * 基础核查信息
 */
export interface BaseCarbonInspect {
  organizationCode: string;
  /**
   * 排放单位
   */
  dischargeUnit: string;
  /**
   * 排放年份
   */
  dischargeYear: string;
  /**
   * 年度产量
   */
  yield: string;
  /**
   * 生产天数
   */
  workDay: string;
  /**
   * 碳盘查排放量
   */
  carbonInventoryEmission: number | null;
  /**
   * 盘查日期
   */
  inventoryDate: string;
  /**
   * 碳核查排放量
   */
  carbonInspectEmission: number | null;
  /**
   * 核查日期
   */
  inspectDate: string;
  /**
   * 碳核查机构
   */
  inspectDepartment: string;
  /**
   * 配额分配方法
   */
  quotaDistributionType: keyof typeof QuotaDistributionTypeEnum;
  /**
   * 年度调节系数
   */
  annualAdjustmentCoefficient: number | null;
  /**
   * 历史三年基准值
   */
  historyBenchmarkData: number | null;
  /**
   * 年度配额计算
   */
  annualQuotaCalculate: number | null;
  /**
   * 配额缺口
   */
  quotaGap: number | null;
  /**
   * 缺口核查量占比
   */
  gapProportion: number | null;
  /**
   * 年度配额应发
   */
  annualQuotaGrant: number | null;
}

/**
 * 碳核查与履约分页列表 入参
 */
export interface GetInspectListParams {
  /**
   * 排放单位
   */
  organizationCode?: string;
  /**
   * 排放年份
   */
  dischargeYear?: string;
}

/**
 * 碳核查与履约分页列表 返回参数
 */
export interface GetInspectListResult extends BaseCarbonInspect {
  /**
   * 核查记录编号
   */
  inspectNo: string;
  /**
   * 实际发放
   */
  actualDistribution: number;
  /**
   * 发放日期
   */
  distributionDate: string;
  /**
   * 是否履约
   */
  performanceFlag: string;
  organizationCode: string;
  organizationBoundary: string[];
  // 已履约数
  successNum: number;
}

/**
 * 新增工厂核查记录 入参
 */
export type PostCreateCarbonInspectParams = Partial<BaseCarbonInspect>;

/**
 * 编辑工厂核查记录 入参
 */
export interface PostEditCarbonInspectParams extends Partial<BaseCarbonInspect> {
  /**
   * 核查记录编号
   */
  inspectNo: string;
}

/**
 * 同步盘查数据 返回值
 */
export interface PostSyncInventoryDataResult {
  /**
   * 盘查日期
   */
  inventoryDate: string;
  /**
   * 年度产量
   */
  yield: string;
  /**
   * 生产天数
   */
  workDay: string;
  /**
   * 碳盘查排放量
   */
  carbonInventoryEmission: string;
}

/**
 * 配额预测 请求参数
 */
export interface PostQuotaForecastDataParams
  extends Pick<
    BaseCarbonInspect,
    | 'organizationCode'
    | 'dischargeYear'
    | 'yield'
    | 'workDay'
    | 'carbonInspectEmission'
    | 'quotaDistributionType'
    | 'annualAdjustmentCoefficient'
  > {
  carbonInventoryEmission: number;
}

/**
 * 配额预测 返回参数
 */
export type PostQuotaForecastDataResult = Pick<
  BaseCarbonInspect,
  | 'historyBenchmarkData'
  | 'annualQuotaCalculate'
  | 'quotaGap'
  | 'gapProportion'
  | 'annualQuotaGrant'
>;

/**
 * 获取该排放单位年剩余额度 返回值
 */
export interface GetFindCarbonAllowanceResult {
  /**
   * 年份
   */
  year: string;
  /**
   * 资产类别
   */
  assetTypeCode: string;
  /**
   * 资产类型名称
   */
  assetTypeName: string;
  /**
   * 可用配额
   */
  availableQuota: number;
}

/**
 * 年度清缴履约 返回值
 */
export interface PostCarbonEmissionInspectParams {
  /**
   * 核查记录编号
   */
  inspectNo: string;
  /**
   * 清缴履约数据
   */
  performanceDataList: {
    /**
     * 资产类型
     */
    assetTypeCode: string;
    /**
     * 履约值
     */
    availableQuota: number;
  }[];
}

export interface DischargeUnit {
  organizationName: string;
  organizationCode: string;
}

// 全部组织列表 请求出参
export type GetOrganizationListResult = {
  //
  id: number;
  //
  organizationCode: string;
  //
  organizationName: string;
  //
  parentId: string;
  //
  parentCode: string;
  //
  rootCode: string;
  //
  level: number;
  //
  isLeaf: boolean;
  //
  sort: number;
  // 公司名称
  companyName: string;
  companyAddress: string;
  contact: string;
  contactEmail: string;
  contactPhone: string;
  tag: string;
}[];
